<!DOCTYPE html>
<html>
<!--
Copyright The Closure Library Authors. All Rights Reserved.

Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
  <title>goog.ui.menuBar Demo</title>
  <script src="../base.js"></script>
  <script>
    goog.require('goog.array');
    goog.require('goog.debug.DivConsole');
    goog.require('goog.events');
    goog.require('goog.log');
    goog.require('goog.object');
    goog.require('goog.ui.Menu');
    goog.require('goog.ui.MenuBarRenderer');
    goog.require('goog.ui.MenuButton');
    goog.require('goog.ui.MenuItem');
    goog.require('goog.ui.Separator');
    goog.require('goog.ui.decorate');
    goog.require('goog.ui.menuBar');
    goog.require('goog.ui.menuBarDecorator');
  </script>
  <link rel="stylesheet" href="css/demo.css">
  <link rel="stylesheet" href="../css/menu.css">
  <link rel="stylesheet" href="../css/menubar.css">
  <link rel="stylesheet" href="../css/menubutton.css">
  <link rel="stylesheet" href="../css/menuitem.css">
  <link rel="stylesheet" href="../css/menuseparator.css">
  <style>
    /* Base class for all icon elements. */
    .icon {
      height: 16px;
      width: 16px;
      margin: 0 1px;
      background-image: url(../images/toolbar_icons.gif);
      background-repeat: no-repeat;
      vertical-align: middle;
    }

    /* "Format" icon. */
    .format-icon {
      background-position: -64px;
    }

    .positioning-frame {
      height: 250px;
      overflow: auto;
      width: 100%;
    }

    .format-lightborder {
      border-style: solid;
      border-width: 1px;
      border-color: #ddd;
    }
  </style>
</head>

<body>
  <h1>goog.ui.menuBar example</h1>
  <table border="0" cellpadding="0" cellspacing="4" width="100%">
    <tbody>
      <tr valign="top">
        <td width="67%">
          <fieldset>
            <legend>
              This <strong>menu bar</strong> was created programmatically:
              &nbsp;
            </legend>
            <table border="0" cellpadding="0" cellspacing="4">
              <tbody>
                <tr>
                  <td>
                    <div id="menuBarProgrammatic"
                        class="format-lightborder"></div>
                  </td>
                </tr>
              </tbody>
            </table>
            <br>
          </fieldset>
         </td>

        <td width="67%">
          <fieldset>
            <legend>
              This <strong>menu bar</strong> is decorated:
              &nbsp;
            </legend>
            <!-- Wrap the menubar in a table to prevent it from stretching -->
            <table border="0" cellpadding="0" cellspacing="4"><tbody>
                <tr align="middle"><td>
            <!-- Decorated menu bar definition begins here -->
            <div id="menubar" class="goog-menubar format-lightborder">
              <div id="FileButton" class="goog-menu-button" title="File">
                <span style="vertical-align:middle">File</span>
                <!-- This DIV will be auto-decorated with a menu. -->
                <div id="fileMenu" class="goog-menu">
                  <div class="goog-menuitem">Open</div>
                  <div class="goog-menuitem">Save</div>
                  <div class="goog-menuseparator"></div>
                  <div class="goog-menuitem">Close</div>
                </div>
              </div>
              <div id="formatButton" class="goog-menu-button"
                  title="Format">
                <!-- These elements will become the button's caption. -->
                <div class="icon format-icon goog-inline-block"></div>
                <span style="vertical-align:middle">Format</span>
                <!-- This DIV will be auto-decorated with a menu. -->
                <div id="formatMenu" class="goog-menu">
                  <div class="goog-menuitem">Bold</div>
                  <div class="goog-menuitem">Italic</div>
                  <div class="goog-menuitem">Underline</div>
                  <div class="goog-menuseparator"></div>
                  <div class="goog-menuitem goog-menuitem-disabled">
                    Strikethrough
                  </div>
                  <div class="goog-menuseparator"></div>
                  <div class="goog-menuitem">Font...</div>
                  <div class="goog-menuitem">Color...</div>
                </div>
              </div>
            </div>
            </td></tr></tbody></table>
            <br>
          </fieldset>
        </td>
      </tr>
      <tr>
        <td width="33%">
          <!-- Event log. -->
          <fieldset class="goog-debug-panel">
            <legend>Event Log</legend>
            <div id="log"></div>
          </fieldset>
        </td>
      </tr>
    </tbody>
  </table>
  <br>
  <div id="perf"></div>
  <script>

  // Create programmatic menu bar with menus.
  buildMenu = function(rootNode) {
    var menubar = goog.ui.menuBar.create();
    var menuNames = ["File","Edit","About"];
    var menuOptions = [];
    menuOptions[0] = ['New Files', 'Open File', null, 'Exit'];
    menuOptions[1] = ['Copy', 'Paste'];
    menuOptions[2] = ['Zerg Rush!', null, 'Exit'];

    for (i in menuNames) {
      // Create the drop down menu with a few suboptions.
      var menu = new goog.ui.Menu();
      goog.array.forEach(menuOptions[i],
        function(label) {
          var item;
          if (label) {
            item = new goog.ui.MenuItem(label + '...');
            item.setId(label);
          } else {
            item = new goog.ui.MenuSeparator();
          }
          item.setDispatchTransitionEvents(goog.ui.Component.State.ALL, true);
          menu.addItem(item);
        });

      // Create a button inside menubar.
      var btn = new goog.ui.MenuButton(menuNames[i], menu);
      btn.setDispatchTransitionEvents(goog.ui.Component.State.ALL, true);
      menubar.addChild(btn, true);
      goog.events.listen(btn, EVENTS, logEvent);
    }
    menubar.render(goog.dom.getElement('menuBarProgrammatic'));
  }

  // Set up a logger.
  var timer = goog.now();
  goog.log.setLevel(goog.log.getRootLogger(), goog.log.Level.ALL);
  var logger = goog.log.getLogger('demo');
  var logconsole = new goog.debug.DivConsole(goog.dom.getElement('log'));
  logconsole.setCapturing(true);

  var EVENTS = goog.object.getValues(goog.ui.Component.EventType);
  goog.log.fine(logger, 'Listening for: ' + EVENTS.join(', ') + '.');

  function logEvent(e) {
    var component = e.target;
    var caption = (typeof component.getCaption == 'function') ?
        component.getCaption() : component.getId();
    goog.log.info(logger, '"' + caption + '" dispatched: ' + e.type);
  }

  buildMenu(goog.dom.getElement('menuBarProgrammatic'));

  // Decorate a pre-baked menubar.
  var menubar = goog.ui.decorate(goog.dom.getElement('menubar'));

  // Compute time to process entire page
  goog.dom.setTextContent(goog.dom.getElement('perf'),
    (goog.now() - timer) + 'ms');
  </script>
</body>
</html>
